########################################################################
#  Wiizard - A Wii games manager
#  Copyright (C) 2023  CYBERDEViL
#
#  This file is part of Wiizard.
#
#  Wiizard is free software: you can redistribute it and/or modify
#  it under the terms of the GNU General Public License as published by
#  the Free Software Foundation, either version 3 of the License, or
#  (at your option) any later version.
#
#  Wiizard is distributed in the hope that it will be useful,
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#  GNU General Public License for more details.
#
#  You should have received a copy of the GNU General Public License
#  along with this program.  If not, see <https://www.gnu.org/licenses/>.
#
########################################################################


from PyQt5.QtCore import QThread, pyqtSignal


THREAD_FLAG_IS_CANCELLABLE  = 1
THREAD_FLAG_IS_STOPABLE     = 2

class AbstractThread(QThread):
  completed = pyqtSignal()

  def __init__(self, flags=0):
    QThread.__init__(self)
    self.__flags  = flags
    self.__cancel = False

  @property
  def flags(self):
    return self.__flags

  @property
  def cancelled(self):
    return self.__cancel

  def cancel(self):
    self.__cancel = True

  def run(self):
    raise Exception("Re-implement this!")

  def stop(self):
    raise Exception("Re-implement this if your thread is stoppable!")





